module vec_def;  implicit none;  save;
 public

 type vec_t
  real, dimension(:), pointer:: v => NULL();
  integer:: minI;
  integer:: maxI;
 end type vec_t

! This is public method for type  

 contains
subroutine newVec(self, maxIdx); implicit none;   !constructor  
  type(vec_t), intent(out) :: self;
  integer, intent(in) :: makeSize;
  self%minI = 1;
  self%maxI = maxIdx;
  allocate(self%v(self%maxI));
  self%v = 0.;  ! ????
end subroutine newVec

subroutine delVec(self); implicit none; !destructor
  type(vec_t) :: self;
  deallocate(self%v);
end subroutine delVec


end module vec_def

